/*
 * p1265.cpp
 *
 *  Created on: 2013-3-18
 *      Author: zy
 */

#include<algorithm>
#include<cstdio>
#include<cmath>
#include<iostream>
using namespace std;
struct Point {
	int x, y;
};
int gcd(int a,int b) {
	static int t;
	for(; t=b; b=a%b,a=t);
	return a;
}
void pick(Point *p, int num, int &A, int &E, int &I) {
	A = E = 0;
	for(int i = 0; i < num; i ++) {
		A += p[i].x*p[i+1].y - p[i].y*p[i+1].x;
		E += abs(gcd(p[i].x-p[i+1].x, p[i].y-p[i+1].y));
	}
	A = abs(A);
	I = (A-E)/2+1;
}

int main()
{
	int n,T;
	Point p[110];
	scanf("%d",&T);
	for(int cas=1;cas<=T;cas++)
	{
		int E,I,A;
		scanf("%d",&n);
		for(int i=1;i<=n;i++)
		{
			int dx,dy;
			scanf("%d%d",&dx,&dy);
			p[i].x=p[i-1].x+dx;
			p[i].y=p[i-1].y+dy;
		}
		pick(p,n,A,E,I);
		printf("Scenario #%d:\n%d %d %0.1lf\n\n",cas,I,E,A/2.0);
	}
	return 0;
}
